package com.llb666.shop.order.domain.repository;

import com.llb666.shop.order.domain.entity.OrderStatus;

/**
 * 订单状态仓储层.
 *
 * @author llb666
 */
public interface OrderStatusRepository {

    /**
     * 根据订单id,修改订单状态表的留言时间.
     *
     * @param orderId 订单id
     */
    void updateOrderStatus(String orderId);

    /**
     * 内部接口修改订单状态.
     *
     * @param merchantOrderId 订单Id
     * @param status          订单状态
     */
    void updateOrderStatusByType(String merchantOrderId, Integer status);


    /**
     * 内部接口获取订单信息.
     *
     * @param orderId 订单Id
     * @return 订单状态
     */
    OrderStatus queryOrderStatusInfo(String orderId);

    /**
     * 新增订单状态.
     *
     * @param waitPayOrderStatus 待支付订单状态实体
     */
    void insert(OrderStatus waitPayOrderStatus);

    /**
     * 超时订单，更新待支付的订单为close.
     *
     * @param orderId 订单Id
     * @param status  订单状态:close
     */
    void updateOrderStatusByWaitPay(String orderId, Integer status);
}
